目录
常用指令
克隆仓库
git clone url
查看分支
git branch -a
切换分支
git checkout name
创建一个分支并切换到创建的分支
git checkout -b name
添加到暂存区
git add .
将暂存区里的改动提交到本地的版本库
git commit -m "描述"
合并name分支
git merge name
下拉某个分支
git pull origin name
上传到某个分支
git push origin name
name分支强制覆盖本地当前分支
git reset --hard origin/name
当前分支强制覆盖远程name分支
git push origin name --force
创建.gitignore文件
touch .gitignore
帮助
git help
版本库初始化
git init
相当于是从远程获取最新到本地,不会自动merge
git fetch
相当于从远程获取最新版本并merge到本地
git pull
删除分支
git checkout -d name
查看当前没有add的内容
git diff
查看已经add但是没有commit的内容
git diff --cache
上面两个内容的合并
git diff HEAD
查看当前分支有哪些修改
git status
显示提交日志
git log
问题记录
git 提交代码时出现 error Missing tree 的处理办法
错误:
git push --receive-pack=‘git receive-pack --reviewer xxx@xxx.cn --reviewer xx@xx.cn’ review HEAD:refs/for/master
Counting objects: 1, done.
Writing objects: 100% (1/1), 241 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
error: unpack failed: error Missing tree 129d587458f56f4b1f9c492824a97dc717257516
fatal: Unpack error, check server log
To ssh://xx@121.xx.xx.xx:29418/xxxx_v_2_3.git
! [remote rejected] HEAD -> refs/for/master (n/a (unpacker error))
error: failed to push some refs to ‘ssh://xx@121.xx.xx.xx:29418/xxxx_v_2_3.git’
方法:
git push --no-thin origin HEAD:远程分支名
新手阅读(老手略过)
1.首先项目组长在github创建一个仓库
a.复制创库的地址(例如:https://github.com/fwhf/fwhf.git),在本地git clone url
b.进入项目文件夹
c.git branch -a查看分支(可忽略,可以看到当前在master分支)
d.git checkout -b dev(在本地创建并切换到dev分支)
e.在项目目录(工作区)中搭建项目骨架及基本配置(例如添加了devTest.txt)
f.将修改后的文件上传至本地仓库
git add .
git commit -m "描述"
g.继续将搭建好的项目(即dev分支)push到github的线上仓库中(git push origin dev)
h.这时即可在github中看到dev分支以及添加的devTest.txt文件
2.假设组员甲将要实现一个功能
(abcd同上1)
a.复制创库的地址(例如:https://github.com/fwhf/fwhf.git),在本地git clone url
b.进入项目文件夹
c.git branch -a查看分支(可忽略,可以看到当前在master分支)
d.git checkout -b dev(在本地创建并切换到dev分支,用于线下整合代码,避免出现冲突)
e.git checkout -b fwhf1(在本地创建并切换到fwhf1分支)
f.git pull origin dev(将线上dev分支下拉到本地fwhf1)
g.在工作区中编写自己的功能(例如添加了fwhf1.txt)
h.将修改后的文件上传至本地仓库(同上f)
i.切换到本地dev分支(git checkout dev),将线上最新dev分支下拉到本地dev分支(git pull origin dev),继而在fwhf1下合并自己的dev分支(git merge dev)
j.在没有冲突的情况下(3中演示冲突)继续将写好的功能(即dev分支)push到github的线上仓库中(git push origin fwhf1)
k.这时即可在github中看到fwhf1分支以及添加的fwhf1.txt文件
l.通知组长合并代码。
下面是组长的操作
组长先下更新仓库(git pull)。
新建分支本地fwhf1下拉线上fwhf1分支的内容(git checkout -b fwhf1;git pull origin fwhf1);
切换到dev分支合并fwhf1分支。
在没有冲突的情况下,继续将写好的功能(即dev分支)add,commit,push到github的线上仓库中(git push origin dev)
这时即可在github中看到dev分支看到全部文件
3.假设组员乙将要实现另一个功能
(abcdefgh同上2,假设功能文件为fwhf2.txt,并修改了fwhf1.txt)
假设这时组员甲修改了fwhf1.txt。重复了2的操作。
切换到本地dev分支(git checkout dev),将线上最新dev分支下拉到本地dev分支(git pull origin dev),继而在fwhf2下合并自己的dev分支(git merge dev)。
这时候就会提示fwhf1.txt发生了冲突,在发生冲突的文件删掉不需要的部分。
重复2部分其他步骤即可。