如何使用Git管理代码

Git 是开发人员用来向代码库(msstash)中提交代码或者下载远端代码库中代码的工具。

如何使用git向代码库中提交我们修改后的代码呢?

1.如果是第一次使用git,那么需要在本地电脑上初始化一个代码仓库

cd定位到目录,然后执行 git init, 初始化代码仓库,创建了一个主分支master

如果已经初始化过代码库,那么需要将远程的代码库中的代码copy下来。

git clone "https://msstash.morningstar.com/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"

修改后的代码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  [公共分支]

 

第一次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)

  1. 将远端代码clone下来
  2. 进入项目以后,使用命令:git fetch origin 远端分支名。获取远程更新
  3. 把更新的内容合并到本地分支:git   merge  origin/master

(在本地创建一个新的分支与远端的分支进行合并,使用命令:git checkout –b 本地分支名   origin/远端分支名)

删除分支

删除一个分支dev2:

  git branch –d dev2

  注意不能删除当前所在分支,需要转到别的分支上。

  如果要删除的分支已经成功合并到当前分支,删除分支的操作会直接成功。

  如果要删除的分支没有合并到当前所在分支,则会出现提示,如果确定无须合并而要直接删除,则执行命令:

  git branch –D dev2

  进行强删。

分支重命名

  重命名分支:

  git branch –m oldname newname

  -m不会覆盖已有分支名称,即如果名为newname的分支已经存在,则会提示已经存在了。

  如果改成-M就可以覆盖已有分支名称了,即会强制覆盖名为newname的分支,这种操作要谨慎。

为了避免误操作对远端代码库的影响,通常我们可以将远端的代码库fork一份,建立自己的代码库,然后从自己的代码库中clone一份代码到本地机器上。这样每次commit和push都是在自己的代码库中操作的,对远端的代码库没有影响,如果最后确认无误后,再将自己的代码库与远端的代码库合并,具体操作如下:

Git  fetch origin develop 把远端代码库中的develop分支上的代码拿到自己的代码仓库中,更新对应的develop分支

为了节省空间或者隐藏文件,通常把好几个文件打包压缩在一起给客户使用,但是当我们的功能出现了问题,需要改bug时,在浏览器中我们看到的也是压缩文件,很难调试这时就需要在本地将合成压缩文件的好几个文件打包在一起,去替换压缩的文件,用以下命令可以将多个文件打包合成一个文件替换。多个文件在gruntconfig文件夹里面,打包后的文件在release文件夹中

grunt qbuild --apicom=文件名 --apiunu=true

grunt qbuild --apicom=finra_common
--apiunu=true

grunt qbuild --apicom=calendar
--apiunu=true

如何使用git提交代码的更多相关文章

  1. git提交代码到github

    前言:转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52117504 git提交代码到github 命令汇总: git init git ...

  2. 使用git提交代码到github,每次都要输入用户名和密码的解决方法

    自从使用git提交代码到github后,发现自己使用git的功力增长了不少,但也遇到不少问题.比如,使用git提交代码到github的时候,经常要求输入用户名和密码,类似这种: 网上有这么一种解决方法 ...

  3. Git提交代码失败: empty ident name (for <>) not allowed

    使用git提交代码,报错如下: 下午2:56 Commit failed with error 0 files committed, 1 file failed to commit: 升级 empty ...

  4. 在使用Git提交代码的时候犯了个低级错误

    今天在使用git提交代码的时候,犯了个很低级的错误,按照一切流程当我add并commit提交代码,最后使用push到远程仓库, 接下来奇怪的事情发生了,push之后,查看远程仓库代码并没有发现提交记录 ...

  5. Git提交代码报错Git push error:src refspec XXX matches more than one解决方案

    Git提交代码push时,报错这个 error: src refspec master matches more than one. error: failed to push some refs t ...

  6. git提交代码到码云

    日常代码一般提交到github比较多,但我还是钟爱马爸爸,没错就是码云. 码云是中文版的代码托管的网站,不存在打开网速问题,使用也蛮方便的,日常自己保存托管代码已经足够,平时使用git提交代码到码云是 ...

  7. git提交代码报错 trailing whitespace的解决方法

    1. git提交代码报错 trailing whitespace 禁止执行pre-commit脚本 进入到项目目录中 chmod a-x .git/hooks/pre-commit 2.git提交代码 ...

  8. Git提交代码到主分区

    git 提交代码,本地新建一个my分支,不从本地master分支直接上传,而是先从本地my分支上提交至本地master分支,然后本地master提交至远程master分支 上.前提是远程只有一个mas ...

  9. git提交代码出现错误fatal: Unable to create '项目路径/.git/index.lock': File exists.

    git提交代码出现错误fatal: Unable to create '项目路径/.git/index.lock': File exists. 具体出错代码如下: 具体原因不详,在stackoverf ...

  10. 怎样解决git提交代码冲突

    当我们使用git提交代码时,别人可能也同一时候改动了我们改动的文件,可是别人的先合入到配置库里边,这样当我们的提交要合入时.就会产生冲突,能够使用下面步骤来解决冲突: (1) git rebase   ...

随机推荐

  1. windbg 加载dump监测蓝屏原因时出现重复的星星框提示解决办法

    加载dump文件出现了重复上边的信息 总结: 要reload一下环境,说明符号库未加载出现的错误,!sym noisy 显示详细信息 ,reload重载符号库,未找到的,从服务器进行下载, 注意,第一 ...

  2. Oracle_PL/SQL(6) 触发器(序列、视图)

    序列1.创建序列create sequence seq_alog start with 1 increment by 1 maxvalue 999999999999999999999999999 mi ...

  3. 8K - 圆桌会议

    HDU ACM集训队的队员在暑假集训时经常要讨论自己在做题中遇到的问题.每当面临自己解决不了的问题时,他们就会围坐在一张圆形的桌子旁进行交流,经过大家的讨论后一般没有解决不了的问题,这也只有HDU A ...

  4. C++中强制类型转换

    C++强制类型转换 C++中的强制类型转换虽然兼容C语言中的强制类型转换.但是并不建议在C++中使用C语言风格的强制类型转换.C++中的强制类型转换共有4个关键字分别是:static_cast,con ...

  5. 大数java(pow)

    Problems involving the computation of exact values of very large magnitude and precision are common. ...

  6. nodejs 数字字节转换操作

    function number2Bytes(i) { var arr = new Int32Array(1); arr[0] = 0; var buf = Buffer.from(arr.buffer ...

  7. BZOJ 1227 [SDOI2009]虔诚的墓主人 - 扫描线

    Solution 离散化 扫描线, 并用 $rest[i]$ 和 $cnt[i]$ 记录 第$i$列 总共有 $cnt[i]$棵常青树, 还有$rest[i]$ 没有被扫描到. 那么 第$i$ 列的方 ...

  8. qrcode解决方案大全

    QRCODE解决方案 1.delphi原生QRCode.pas 2.delphi编写http服务器实现QRcode请求生成图片,http下载 3.delphi编写cgi程序,加载到apache服务器 ...

  9. start()方法和run()方法有什么区别?

    通过调用线程类的start()方法来启动一个线程,使线程处于就绪状态,即可以被JVM来调度执行,在调度过程中,JVM通过调用线程类的run()方法来完成实际的业务逻辑,当run()方法结束后,此线程就 ...

  10. robot framework 中should be true 与should contain 的区别

    should be true  是否等于:判断是否should contain  是否包含 a是否包含b