一、基本命令
1、git init 初始化本地仓库
2、git remote add origin '远程git仓库地址' 绑定一个远程仓库,并将远程仓库别名设置为origin
3、git pull origin master 从远程仓库获取最新代码
4、git clone '远程git仓库地址' 相当于直接运行1、2、3
做了修改后
5、git status 查看当前改动了哪些文件
6、git add '一个文件的路径' 将改动的这个文件提交到暂存区
7、git add '一个文件夹' 将文件夹下所有的改动提交到暂存区
8、git add * 将所有改动的文件提交到暂存区。
说明:6、7、8对已经排除追踪的文件不生效(排除追踪的文件在.gitignore文件中定义)。如果一个文件被停止追踪了,可用 git add -f .... 来强制提交。
9、git commit -m "提交说明" 对本次要提交的的文件进行说明
10、git push origin master 将修改的文件提交到远程仓库。
11、git checkout -b dev 创建一个名为dev的新分支,并切换到dev分支,dev的内容取决于你再哪个分支上执行该命令
12、 git branch dev 创建一个名为dev的新分支,但是不做切换动作。dev的内容取决于你再哪个分支上执行该命令
13、git checkout dev 切换到dev分支,切换分支要保证工作区纯净。
14、git merge dev 将dev分支的改动合并到目标分支。目标分支为你当前工作区所在的分支。
15、git branch -a 查看所有的分支
16、git branch -d dev 删除本地dev分支
17、git push --delete origin dev 删除origin对应的远程仓库的dev分支
18、git checkout '文件路径' 撤销一个文件的改动
19、git reset '文件路径' 将一个文件撤出暂存区,保留修改。
二、高级用法(针对场景)
(1)需求做了一半告诉你需求有变化,不再做了,如果你此时还没有进行commit
git reset --hard
(2)代码已经commit ,还未进行push
git reset --hard '上一次提交的版本号'
(3) 代码已经commit,但是发现不该提交的文件也在里面
git reset --mixed '上一次提交的版本号' 将提交撤销,把所有文件从本地仓库退出保持自 己修改的状态
(4) 代码已经commit ,提交说明写的不太好,想重新修改下提交说明
git reset --soft '上一次提交的版本号'
(5) 代码改了半天,发现自己改错分支了。
git add .
git stash
git checkout '对的分支'
git stash pop
(6) 代码不但做错分支了,而且还提交到远程了。
错误分支 git reset --soft '上一次提交的版本号'
git stash
git checkout '对的分支'
git stash pop
git commit -m "版本说明"
git push origin '对的分支'
git checkout 错的分支
git push origin 错的分支 --force
(7) 已经发布一期,二期内容还未完全开发完。客户急着想要二期的一个功能。该功能二期已经开发完。可在一期的分支上执行:
git cherry-pick '该功能所形成的版本号'
如果有多次提交可按 git cherry-pick 功能版本号1 功能版本号2
注意,抽取功能过程中可能会产生冲突。需要解决冲突后再继续cherry-pick
(8)合并代码某个冲突文件已经搞不太清楚是保留谁的版本合适。
git checkout --conflict=diff3 '已经merge冲突的某个文件'。
此命令每个冲突的文件会产生三段标志,第一段为自己修改的。第二段是自己修改前的。第三段是别人修改的。
如果你喜欢这种方式来合并代码可使用 git config --global merge.conflictstyle diff3 全局修改。这样修改后,每次merge产生的冲突文件都会以三段标志的方式来呈现。
git config --global merge.conflictstyle merge 可修改回正常的二段标志方式呈现。
合并代码示意图:
git分区