从需求和流程来初步学习git常用命令(适合新手)

    技术2022-07-10  79

    流程图

    Remote远程仓库也就是git仓库Repository本地仓库使用init创建的本地仓库Index缓存区使用add提交到Index暂存区workplace工作区也就是电脑上显示的目录add添加将文件添加到Index缓存区commit提交将Index中的代码提交到本地仓库push推送将本地代码推送到远程clone克隆使用clone能够从git仓库拷贝项目到本地fetch拉取使用fetch能够获取远程分支的改动checkout切换分支切换不同的分支到工作区pull拉取分支直接将远程分支拉取到本地当前分支

    需求

    从需求来了解git命令


    需求1:获取远程代码 1.克隆远程仓库

    git clone url

    需求2:提交代码到本地仓库

    git status 查看状态 git diff查看改变内容 git add . 跟踪所有改动过的文件 git add <> 跟踪指定文件 git mv <old> <new> 文件改名 git rm <file> 删除文件 git rm --cached <file> 停止跟踪文件但不删除 git commit -m "commit message" 提交所有更改过的文件 git commit --amend 修改最后一次提交

    需求3:远程操作

    git remote -v 查看远程版本库信息 git remote show <remote> 查看指定远程版本库信息 git remote add <remote> <url> 添加远程版本库 git fetch < remote> 从远程库获取代码 git pull <remote> <branch> 下载代码及快速合并 git push <remote> <branch> 上传代码及快速合并 git push <remote> :<branch/tag-name> 删除远程分治或标签 git push --tags 上传所有标签。

    需求4:分支与标签的操作

    git branch 显示所有本地分支 git branch <new-branch> 创建新分支 git branch -d <branch> 删除所有本地分支 git checkout <branch/tag> 切换到指定分支或标签 git tag 列出所有本地标签 git tag <tagname> 基于最新提交创建标签 git tag -d <tagname> 删除标签

    需求5:合并与衍合

    git merge <branch> 合并指定分支到当前分支 git rebase <branch> 衍合指定分支到当前分支

    需求6:查看log

    git log 查看提交历史 git log -p <file> 查看指定文件的提交历史 git blame <file> 以列表的方式查看指定文件的提交历史

    需求7:撤销操作

    git reset --hard HEAD 撤销工作目录中所有未提交文件的修改内容 git checkout HEAD <file> 撤销指定文件未提交的内容 git resert <commit> 撤销提价的内容

    流程

    0.获取远程仓库并上传项目到分支

    0.创建本地仓库 进入一个你想作为仓库的目录(如 Git_Repo/),初始化仓库:

    git init

    1.创建分支 每个分支的状态都是独立的,所以要先创建分支再获取远程仓库,如果不创建分支,则默认是在master分支下,现在创建一个分支branch0

    git branch branch0

    2.获取远程仓库 在这一步之前要,进行远程仓库的连接(见1.连接远程仓库),然后获取远程仓库,你需要给远程仓库一个本地的命名如remote0,这个命名只用于本分支。url为远程仓库的url。

    git remote add remote0 'url'

    3.显示此时有哪些远程仓库

    git remote -v

    4.同步本地仓库的分支与远程仓库要管理的分支 就是将远程分支复制到本地仓库,分两步: 1.拉取本地没有的数据

    git fetch remote0 master

    2.合并分支

    git merge remote0 master :[本地分支] 合并到本地分支 git merge remote0 master 合并到当前分支

    此时,分支数据已经同步,此时可以进行更改。

    5.添加所有更改或文件到index缓存

    git add .

    6.提交数据到本地仓库 引号内是对本次提交的注释,一定要有。

    git commit -m '第一次提交数据'

    此时,本地分支是更改后的项目,需要推送到远程分支

    7.推送数据到远程分支

    git push remote0 master : [本地分支] 推送本地分支数据到远程master分支 git push remote0 master 默认推送当前分支到远程的master分支

    8.上传成功。 如果遇到错误 ! [rejected] master -> master (non-fast-forward),转到2.push出错

    1.连接远程仓库

    1.创建密匙 $ ssh-keygen -t rsa -C "邮箱" 2.安装密匙 复制rsa.pub的密匙到git的密匙添加中 3.测试连接 $ ssh -T git@github.com

    2.push出错 此错误的主要原因还是,远成分支和本地分支的数据不同步。 解决方法,直接拉取最新版的远程分支数据到本地的工作区,再从add那一步再走一遍 git pull origin master --allow-unrelated-history 3.文件管理:

    0.创建本地仓库(在本地仓库的目录下,才能进行git操作) git init 1.获取远程项目 git clone url 2.显示远程项目 ls 3.创建文件, touch test1.txt 4.显示本地仓库文件的状态:新增的文件前会有 ?? -s表示以简短的信息输出,如:A,AM,??。 git status -s 5.将文件添加到本地的缓存区:添加到缓存区的文件的status为 A git add test1.txt 6.修改缓存区的文件,修改后,文件的statud是AM,需要再次进行add操作 vim test.txt 7.查看缓存区与未写入缓存区的文件的区别,改动 git diff 8.使用commit进行提交,由于每次提交都需要记录电子邮箱和名字,所以要先配置用户名和邮箱地址。 $ git config --global user.name 'runoob' $ git config --global user.email test@runoob.com 9.使用commit进行提交,-m命令选项用以在命令行中提供注释 git commit -m '提交test1' 10.使用rm 移除文件, git rm <file> 移除文件 git rm -f <file> 如果文件已经修改并暂存到缓存中,需要用强制删除 git rm --cache README 仅清除缓冲区的文件 git rm -r * 递归删除*的所有目录 11.对文件进行修改使用mv git mv REDMAE README.md

    4.远程仓库管理:

    1.创建密匙 $ ssh-keygen -t rsa -C "邮箱" 2.安装密匙 复制rsa.pub的密匙到git的密匙添加中 3.测试连接 $ ssh -T git@github.com 4.初始化本地仓库的几步 mkdir <file> chmod README git init git add README git commit -m '备注信息' 5.提交本地仓库的文件到远程仓库 git remote add name 'url' 将远程仓库(url)添加到本地,name为自己定义的名称 git push -u origin master 将本地master分支的内容提交到remote中的仓库中 6.查看远程仓库,添加-v可以显示远程仓库的url git remote -v 7.提取远程仓库 git fetch 8.获取远程仓库中的数据,并合并到本地所在任意分支 git fetch [alias] 获取本地仓库没有的数据 git merge [alias]/[branch] 将服务器上的任何更新合并到当前分支 例:git fetch origin git merge origin/master 9.将数据推送到远程仓库 git push [alias][branch] 推送新分支与数据到远端仓库 例:git push origin master 10.删除远程仓库 git remote rm [别名] 例:$ git remote -v origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push) # 添加仓库 origin2 $ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git $ git remote -v origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push) origin2 git@github.com:tianqixin/runoob-git-test.git (fetch) origin2 git@github.com:tianqixin/runoob-git-test.git (push) # 删除仓库 origin2 $ git remote rm origin2 $ git remote -v origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push)

    小结

    从远程获取数据时:git pull 和 git fetch的区别: git fetch: git fetch origin master:temp 将远程的master分支下载到temp分支中 git diff temp 比较temp和本地master代码的区别 git merge temp 将temp合并到master主分支中 git branch - d temp 删除temp分支 直接使用fetch的话,需要两步: 1.获取远程分支的数据到本地分支,可以选择下载到哪个分支。 2.比较分支与master分支的不同,再进行合并。 git pull: git pull <远程主机名> <远程分支名>:<本地分支名> 冒号前面的参数1<=2个,后面的参数<=1个 例:git pull remote master 将远程的master下载到本地的master 相当于git fetch 和 git merge 在实际应用中,git fetch 更加安全一些, 因为在merge之前可以查看diff,再决定是否合并。
    Processed: 0.015, SQL: 9