问题描述
目前我都是git add.,然后git commit -m 'xxx',然后git pull ,然后git push
问题出现的平台版本及自己尝试过哪些方法
由于有时候在家里修改了代码,但是忘记了提交(修改时间在前),在公司修改提交了(修改时间在后),如果再回家提交就会出现报错,这个时候就会跟尴尬,因为不熟悉,每次都要折腾很久。如果公司修改代码忘了提交,我用向日葵开机棒开机然后teamviewer远程提交,但是这个也不是个办法,所以我想问一下是我的顺序错了吗?应该先pull吗?
目前我都是git add.,然后git commit -m 'xxx',然后git pull ,然后git push
由于有时候在家里修改了代码,但是忘记了提交(修改时间在前),在公司修改提交了(修改时间在后),如果再回家提交就会出现报错,这个时候就会跟尴尬,因为不熟悉,每次都要折腾很久。如果公司修改代码忘了提交,我用向日葵开机棒开机然后teamviewer远程提交,但是这个也不是个办法,所以我想问一下是我的顺序错了吗?应该先pull吗?
首先应该理解git的原理。
git分为两个仓库,一个是本地的
,一个是远程的
。
git add .和git commit都是针对你的本地仓库
。
git add做了什么,你可以简单理解是标记下那些文件要被提交到本地仓库
。
git commit就是把你标记的文件提交到本地仓库
git pull是从远程仓库拉代码并merge到你的本地仓库,pull是两个命令的合(fetch和merge)
所以理论上pull在这两个之前之后都没什么问题,但是通常推荐先pull,我的习惯是
pull、add、commit
尝试 git pull origin [your-branch] --rebase
。
如果不 pull,commit 后直接 push,有冲突时会报错,这应该就是你所遇到情况(“如果再回家提交就会出现报错”)。
commit 后 push 之前需要 pull --rebase,然后再 push。pull 最好加 --rebase,可以将刚刚的 commit rebase 至远程最新的 commit,这样有时可避免直接 pull 造成的无用 merge 提交(因为 pull 等于 fetch && merge,如果远程提交比你本地提交新,就会产生 merge)。当然如果有冲突,是否加 --rebase 还都要手动解决冲突,然后再 push。
全部的步骤是这样的 第一步:你在本地创建个仓库 git init 第二步: git remote add origin (这里放SSH)密钥 第三步: git pull origin master 先拉一下 防止版本冲突造成的问题。 第四步 git add . 将代码放到暂存区 第五步: git commit -m 生成本地版本 第六部: git push origin master 推送上去。
最佳实践是建立自己的分支修改代码,完成后,提MR合并到集体的开发分支。
流程:
git checkout develop
git checkout -b self_branch
// 修改代码
git add .
git commit -m 'xxxxx'
Git网站发起Pull Request,把self_branch合并到develop分支,然后让同事review你的代码,以及合并。
5 回答2.8k 阅读
3 回答2.6k 阅读
3 回答963 阅读
提交之前更新一遍就没问题