15分钟学会git基本的操作命令

时间:2022-09-16 21:19:36

http://hao.jobbole.com/try-git/

假如你现在新创建了一个项目,想把它提交到github上面?

假设你创建好了一个项目,并切换到项目的根目录下面:

$ git status   //查看当前项目下所有文的状态,如果第一次,你会发现都红颜色的,因为它还没有交给git/github管理。

$ git add .   //(.)点表示当前目录下的所有内容,交给git管理,也就是提交到了git的本地仓库。

Ps:git的强大之处就是有一个本地仓库的概念,在没有网络的情况下可以先将更新的内容提交到本地仓库。

$ git commit –m”new natter ”  //对你更新或修改了哪些内容做一个描述。

$ git remote add origin git@github.com:defnngj/hibernate-demo.git

//如果你是第一次提交项目,这一句非常重要,这是你本地的当前的项目与远程的哪个仓库建立连接。

Psorigin可以改为别人的名字,但是在你下一次push(提交)时,也要用你修改之后的名字。

$ git remote -v  //查看你当前项目远程连接的是哪个仓库地址。

$ git push -u origin master  //将本地的项目提交到远程仓库中。

------------------------------------------------------------

假如,你回到了家,想把公司提交的项目克隆到本地?

如果你是第一次想把github上面的项目克隆到本地或者要克隆别人的项目到地。

$ git clone git@github.com:defnngj/hibernate-demo.git  //在git下面切换到想存放此项目的文件目录下,运行这条命令就可以将项目克隆下来。

假如本地已经存在了这个项目,而仓库中又有一新的更新,如何把更的合并到本地的项目中?

$ git fetch origin    //取得远程更新,这里可以看做是准备要取了

$ git merge origin/master  //把更新的内容合并到本地分支/master

-------------------------------------------

项目中删除了一些文件,如何提交?

假如远程仓库中已经存了aaa这个文件,我fetch了下来,并删除了aaa这个文件,想再push上到远程仓库中,并使远程仓库中的项目被新的修改覆盖(也是是远程仓库中的aaa也被删除)

$ git status   //可以看到我们删除的哪些文件

$ git add .   //删除之后的文件提交git管理。

$ git rm   src/com/hzh/hibernate/dao/aaa.java    //移除我们删除的那个文件,不然git不允许我们往远程仓库提交。

Ps: 如果你想删除的是某个目录(java包),这里想移除整个目录的内容。

$ git rm  src/com/hzh/hibernate/bbb/ -r   // -r 会把bbb/目录下的所有内容一次性移动。

------------------------------------------------------------------------

远程创建了一个新仓库,本地创建了一个新项目,如何使新的项目与仓库对应起来?

其实,这个也很简单,只是我当时对那些命令不太理解,所以比较模糊,不知如何对应。

$ git remote add origin git@github.com:defnngj/hibernate-demo.git

//还是这个命令,在你push项目之前加上这一句就OK了。

git@github.com:defnngj/hibernate-demo.git 就是你常见的新仓库的地址啊。git切换到新项目下,在push之前,加上这一句,我们创建的新仓库就与新项目建立了连接。

注意:

1.生成SSH keys的过程可参考官方文档https://help.github.com/articles/generating-ssh-keys

2.使用Git Bash执行命令,而不要用windows的cmd执行,以免因系统中安装过cygwin和MinGw等工具产生不必要的问题。

3.GitHub官方推荐使用HTTPS的方式push和pull代码

4.使用HTTPS方式commit代码时用户名不会关联到Files中,也不会显示在Contributions中。但是在Public Activity中本地用户名是关联的(链接到主页)。

5.要将用户名关联到GitHub用户,则user.email必须设置为注册账号时使用的Email地址。

说明:

1.直接记录快照,而非差异比较

git会把出现变更的文件直接拷贝,形成新的blob,而非与上一个版本的diff,所以一旦需要查看某版本直接load即可,而其他差异版本控制需要做merge,空间换时间。并非每个当前版本都需要做备份,如果没有改变,那么快照其实是链接上一个版本。git会在隐藏目录.git里存在object里,定期会优化,保证快照空间,和读取时间的平衡。

2.对任何一个文件,在git内部只有三种状态:已修改(modified),已暂存(staged)和已提交(committed)

15分钟学会git基本的操作命令

参考: http://git-scm.com/book/zh/v1