如何使用Git管理代码
Git 是开发人员用来向代码库(msstash)中提交代码或者下载远端代码库中代码的工具。
如何使用git向代码库中提交我们修改后的代码呢?
1.如果是第一次使用git,那么需要在本地电脑上初始化一个代码仓库
cd定位到目录,然后执行 git init, 初始化代码仓库,创建了一个主分支master
如果已经初始化过代码库,那么需要将远程的代码库中的代码copy下来。
git clone "https://xxxx/XXXX"
git status 查看当前的状态,非常有用
创建分支等一系列操作一定要进入项目中(cd d:/文件夹名字/项目名),不能在外面的文件夹中操作,否则就只能出错啦!~~~~(>_<)~~~~
2. 创建新分支, git branch
feature/QS-7589
3. 转到新分支, git checkout
feature/QS-7589
创建分支并切换到新分支:git checkout –b feature/QS-7859
4.在自己的电脑本地上对代码进行添加、修改、保存。
5. 使用git add --all, 让文件被git跟踪, (每次修改后提交之前都要跟踪文件)
如果只想提交某个文件,那么在使用这个命令时,使用git add 文件名。
6. 提交代码到本地,git commit -m
"some comments"
合并步骤5,6:git commit -a -m "some comments"
注:修改后的代码commit以后,如果要给别人检查一下,就直接在修改的分支下,执行如下命令行:
git push origin feature/ID ,是将分支代码push上去,以便其他人查看,如果不需要别人帮忙查看,不使用这个命令.
每次commit代码都会产生一条记录在stash中,如果同一个任务commit太多次,就会显得很繁琐,不利于其他成员去看,所以应该将所有的commit合并成一条.
$ git merge –-squash 分支名 ------将分支名上的多个commit合并成一个,放在当前分支上。
$ git commit -m “meaasge” -----提交
或者将重复的,不需要的commit删掉。
$ git log ------查看commit记录,并记录下最新代码分支的commit号,使用q退出。
$ git reset --soft commit码
$ git commit –m “ message”
如果对同一个问题,在同一个分支上commit了多次,而在某次只需要push某一次的commit,只需要切换到要合并到的主分支上,使用命令
$ git cherry-pick commitId (!重要),这个commitId号,可以在msstash中查看到。
7. 提交代码到远端过程
a.转到公共分支 git checkout [公共分支]
b.将公共分支上的代码取下来 git pull --ff (每次在push代码到库之前都必须pull一下,确保本地的代码更新到最新状态)
c.转到新分支 git checkout
feature/ID
d.以公共分支为基准
git rebase [公共分支]
e.转到公共分支
git checkout [公共分支]
f.将新的分支合并到公共分支上
git merge --no-ff feature/ID
以上的操作都是在本地的分支进行的操作,以下是最后一步,才是将本地的公共分支合并到远端的公共分支上。
g.将合并后的公共分支上的代码推送到msstash代码库中 git push origin [公共分支]
git push origin feature/ID
,是将分支代码push上去,以便其他人查看,如果不需要别人帮忙查看,不使用这个命令
第一次push或者同样的分支push过,但是已经删除了,需要使用git push origin [公共分支]
**********************************************************************************************************
有时候bug比较小,在得到manager的同意后,可以直接在prestage上修改,修改完以后直接将在本地prestage上做的修改push到远端的prestage上。在本地prestage下,使用命令git push origin prestage将本地的代码push到远端的prestage上。
修改完prestage以后,还可以将代码push到远端的develop分支上,首先切换到本地的develop分支上,然后使用git cherry-pick commitId,将prestage分支上的修改放到本地develop上。然后使用git push origin develop,这样就达到了将某个分支上的某次commit提交到远端的develop上的目的。
git branch 只是查看本地代码的分支
git branch –a 查看所有代码库中的分支
如果在某一个分支上做了修改,但是不想提交代码就想切换到其他分支,可以使用命令:
git stash , 然后再切换分支。
如果你想切换到刚刚修改过的分支后重新获得刚刚修改过的内容,则切换到这个分支以后,使用命令 git stash apply
如何在本地合并远端的分支,(假设要合并远端的分支origin/feature/add)
- 将远端代码clone下来
- 进入项目以后,使用命令:git fetch origin 远端分支名。获取远程更新
- 把更新的内容合并到本地分支:git merge origin/master
(在本地创建一个新的分支与远端的分支进行合并,使用命令:git checkout –b 本地分支名 origin/远端分支名)
Git fetch origin develop 把远端代码库中的develop分支上的代码拿到自己的代码仓库中,更新对应的develop分支
将develop分支合并到feature/QS-8650上:首先切换到feature/QS-8650分支上,然后
git merge --no-ff develop,如果有冲突就解决冲突,没有冲突就可以提交feature/QS-8650
如果不小心在本地使用了git push origin
develop命令,将自己代码库中的develop分支做了修改,那么再使用git pull 时,自己fork下来的代码库不会同步更新公共仓库中的更改。通常重新fork公共代码仓库,重新修改。
*****************************************************************************************************************
删除分支
删除一个分支dev2:
git branch –d dev2
注意不能删除当前所在分支,需要转到别的分支上。
如果要删除的分支已经成功合并到当前分支,删除分支的操作会直接成功。
如果要删除的分支没有合并到当前所在分支,则会出现提示,如果确定无须合并而要直接删除,则执行命令:
git branch –D dev2
进行强删。
分支重命名
重命名分支:
git branch –m oldname newname
-m不会覆盖已有分支名称,即如果名为newname的分支已经存在,则会提示已经存在了。
如果改成-M就可以覆盖已有分支名称了,即会强制覆盖名为newname的分支,这种操作要谨慎。
为了避免误操作对远端代码库的影响,通常我们可以将远端的代码库fork一份,建立自己的代码库,然后从自己的代码库中clone一份代码到本地机器上。这样每次commit和push都是在自己的代码库中操作的,对远端的代码库没有影响,如果最后确认无误后,再将自己的代码库与远端的代码库合并。
***************************************************************************************************************
为了节省空间或者隐藏文件,通常把好几个文件打包压缩在一起给客户使用,但是当我们的功能出现了问题,需要改bug时,在浏览器中我们看到的也是压缩文件,很难调试这时就需要在本地将合成压缩文件的好几个文件打包在一起,去替换压缩的文件,用以下命令可以将多个文件打包合成一个文件替换。多个文件在gruntconfig文件夹里面,打包后的文件在release文件夹中
grunt qbuild --apicom=文件名 --apiunu=true
grunt qbuild --apicom=finra_common --apiunu=true
grunt qbuild --apicom=calendar --apiunu=true