git: 基本概念和操作

git hub/git lab 合作 

有关协作,原来了解的比较少,其实向tensorflow上提交代码就是用的github, 明确github是个网站。

有几个关键点要注意:

1. 从原项目中fork一个项目到自己的账号,也是个remote 项目

2. git clone 从自己的项目

3. 本地的repo要关联自己项目的仓,git clone时会自动创建clone的origin  remote branch

4. 因为代码最终是要合成得到原项目,所以需要添加一个remote repo xxx和local repo关联

5. local repo要和xxx的代码同步,因为最终代码要提交到xxx

6. local repo在工作区完成修改、提交到本地等

7. git push branch yyy到remote origin 

git push -f origin feature/clang-format(不加-f 可能报错:使用-f的前提是保证原始项目的git log和要提交的一直(除了第一条[要提交的修改])) [从git lab网站上看commits], 否则最后merge request 失败

8. 此时在自己fork出的git hub上就能看到提交,然后可以发起pull request

9. 在网页进行交流、rebase 等等

10. 没问题 , 合入到主干 

怎样从一个 remote仓更新代码:

➜  python git:(track_submit) ✗ git pull submit_master 
You asked to pull from the remote 'submit_master', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
➜  python git:(track_submit) ✗ git pull submit_master master
From git.n.xiaomi.com:deep-computing/sensor-algorithms
 * branch            master     -> FETCH_HEAD
 

git clone后怎样更新代码

12780  git remote -vv
12781  git remote add git@git.n.xiaomi.com:deep-computing/watchsensorrecord.git
12782  git remote add upstream git@git.n.xiaomi.com:deep-computing/watchsensorrecord.git
12783  git remote -vv
12784  git fetch upstream
12788  git rebase -i upstream/master

多个分支间的关系

对应的.git/config文件

  1 [core]                                                                                                                                                                                                  
  2     repositoryformatversion = 0
  3     filemode = true
  4     bare = false
  5     logallrefupdates = true
  6 [remote "origin"] clone后的
  7     url = git@git.n.xxx.com:xxx/xxx.git
  8     fetch = +refs/heads/*:refs/remotes/origin/*
  9 [branch "master"]
 10     remote = origin
 11     merge = refs/heads/master
 12     rebase = true

 16 [remote "upstream"] 上游被clone的分支
 17     url = git@git.n.xxx.com:xxx.git
 18     fetch = +refs/heads/*:refs/remotes/upstream/*


使用命令添加remote分支

git remote add upstream git@git.n.xxx.com:xxx.git

也可直接编辑config文件

各分支间关系

1. origin 从upstream中clone, origin 向upsteam 发起 merge request

2. checkout 到master分支 git fetch --all, git rebase -i git rebase -i upstream/master 得到upstream最新代码

3. git push -f origin master    ;push代码到 clone得到的分支origin 

4. 创建分支 git checkout -b xxx, git add, commit -s, 后

5. git push -f origin(target) xxx(source 待提交分支)

6. 提交merge request

Git remote操作

git stash

git submodule

Git - 子模块

  • 进入git clone之后的目录下输入:

git submodule update --init --recursive

git 查看修改

git show commitID 得到是

git 查看最近或某一次提交修改的文件列表相关命令整理。

git log --name-status 每次修改的文件列表, 显示状态
git log --name-only 每次修改的文件列表
git log --stat 每次修改的文件列表, 及文件修改的统计
git whatchanged 每次修改的文件列表
git whatchanged --stat 每次修改的文件列表, 及文件修改的统计
git show 显示最后一次的文件改变的具体内容
git show -5 显示最后 5 次的文件改变的具体内容
git show commitid 显示某个 commitid 改变的具体内容

遇到的问题:代码已经merge到基线,当git fetch, git rebase 都看不到更新

git-fetch | 当下

git fetch 并不会改变你本地仓库的状态。它不会更新你的 main 分支,也不会修改你磁盘上的文件。

理解这一点很重要,因为许多开发人员误以为执行了 git fetch 以后,他们本地仓库就与远程仓库同步了。它可能已经将进行这一操作所需的所有数据都下载了下来,但是并没有修改你本地的文件。

所以, 你可以将 git fetch 的理解为单纯的下载操作

 

参考

标签 | 猴子都能懂的GIT入门 | 贝格乐(Backlog)  "猴子都能看懂的GIT入门"

GIT团队合作探讨之一-保持工作同步的概念和实践 - 世有因果知因求果 - 博客园

GIT团队合作探讨之二--Pull Request - 世有因果知因求果 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值