一 git 相关概念
[1] git 远程仓库。是代码服务服务器中的一个地址。使用git remote –v可以查看远程库地址,origin 是远程库的别名。
[2] git 本地仓库。是本地代码的存储的仓储。可以使用 git init初始化一个本地仓库,也可以使用git clone 从服务端复制一个仓库到本地。
常见命令:git clone ssh://[email protected]:29418/Wireless/android
ssh://是通信协议,ssh://[email protected]是在git 服务器上的用户名,29418 是端口号,Wireless/android 是库名
[3] 本地Index 库。是本地暂存的代码库,需要提交到本地仓库的代码需要首先添加到Index库。
[4] 工作空间。变更信息都存在该库里面。
[5] stash.可以理解为工作空间的一部分,是工作空间中的保存的一次变更。结构图为:
二 相关命令
[1]从服务端拉取代码: git pull 与git pull –rebase
git pull是简单的拉去服务端的代码并与本地代码合并。
git pull –rebase拉取代码后,并将远程最新提交点作为本地代码提交的基点,再进行合并。【推荐方式】
三 git 在 gerrit 这种服务器下的工作流程
[1] 当一个版本发完,要出个新分支比如rel/6.15 时候执行:
git checkout –b rel/6.15 origin/rel/6.15 在本地创建rel/6.15 分支,并将远程服务器上的origin/rel/6.15 ,
[2] 先看你本地的workspace 是不是干净的,通过git status 这个命令去查看,如果不想提交到服务器上去,如果有改动先执行 git stash 去暂存本地,如果需要提交到服务器上去,执行git add ./file_paths,git commit -m "提交记录所显示的标题"。
[3] 执行 git pull --rebase 去更新服务器上代码
[4] 如果更新代码发生了冲突,执行git mergetool 去手动的编辑冲突,注意:编辑完冲突后,在workspace 会产生.org 文件,这时候最好执行 git clean -fd 命令,删除.org 文件
[5] 然后执行 git rebase --coutinue 到这一步,所有的冲突都解决了。
[6] 执行 git push origin rel/6.15:refs/for/rel/6.15 完成代码的提交。
遇到问题:
1 在使用过程中出现 执行 git pull --rebase 后出现 :Unlink of file '.git/objects/pack/pack-02b1af12cd30f113c3d2c3c361e0d96f2dd4a59f.idx' failed. Should I try again? (y/n)
解决方案: 在执行git pull --rebase 之前 执行下 git gc 去清理下git 的缓存
如果我们在开发过程中,更换机器,该机器上是其他开发人员的账号
用的命令;
git config --global user user.name "用户名"
git config --global user user.email "邮箱地址"
git --amend
1 在开始的时候要配置用户名和email 需要的git 命令是
lpt41879:android_2 bkhu$ git config --global user.name "xxx"
lpt41879:android_2 bkhu$ git config --global user.email "邮箱地址"
在提交代码,如果执行git commit 操作,要想回退,执行:
git reset --hard HEAD~1
1 在开始的时候要配置用户名和email 需要的git 命令是
lpt41879:android_2 bkhu$ git config --global user.name "xxx"
lpt41879:android_2 bkhu$ git config --global user.email "邮箱地址"
在开发中,在两个workSpace 将代码进行合并,的git 命令如下:
git diff > code.diff
cd 到需要合并的目录下执行:
git apply ../code.diff
[]
【】