git常用命令

Git命令行配置
1 安装Github
2 安装msysgit
3 要配置用户名和油箱
  git config --global user.name <用户名>
 我的命令就是:git config --global user.name mchdbagh
  git config --global user.email <油箱>
 我的命令就是:git config --global mchdba@yahoo.com
4 验证有没有连接上remote远程服务器
ssh -T git@github.com

5 要生成ssh key
$ ssh -keygen
看到需要输入密码的,直接2个回车键即可回到主窗口。

去找.ssh里面的id_isa.pub打开,最好用notepad++打开,的里面的内容copy出来,然后放到https://网址里面,加入
如何生成,请看文档详细介绍。http://www.worldhello.net/gotgithub/index.html#id6

Git常用命令介绍
git init --初始化项目,刚开始初始化项目的时候使用
git clone --从服务器上克隆到本地,如果服务器上面已经有项目了,直接使用这个命令clone到本地进行使用。
git status --查看版本信息
git add  --添加本地文件
git commit --提交更改
git push --tags --将更改推送到服务器

(1) git init操作
kyman@SKYMAN-CF7E3587 ~
 mkdir test_git

kyman@SKYMAN-CF7E3587 ~
 cd test_git/

kyman@SKYMAN-CF7E3587 ~/test_git
 ls

kyman@SKYMAN-CF7E3587 ~/test_git
$ git init
Initialized empty Git repository in c:/Documents and Settings/skyman/test_git/.git/
 ls -a
  ..  .git

看到有.git文件
$ ls -al
total 0
drwxr-xr-x    3 skyman   Administ        0 Sep 25 23:10 .
drwxr-xr-x   41 skyman   Administ        0 Sep 25 23:10 ..
drwxr-xr-x    1 skyman   Administ        0 Sep 25 23:10 .git

$

看到多另一个.git目录,表示项目创建成功了。

(2) git clone操作
登陆 https://github.com/,看右下角,如图下图,找到打开库的网址把提示mchdbagh/manual56加到后面,网址就是 https://github.com/mchdbagh/manual56

打开后,点击右下角的HTTPS clone URL栏目下方的复制按钮,就得到了库的clone地址 https://github.com/mchdbagh/manual56.git,如图所示

也可以选择ssh方式:git@github.com:mchdbagh/manual56.git 

git clone git@github.com:mchdbagh/manual56.git;


打开 git clone git@github.com:mchdbagh/helloworld.git
如果需要自定义一个目录名,可以写成 git clone git@github.com:mchdbagh/helloworld.git test_hw

检测是否clone成功,看到有manual56目录是否存在

$ ls
AppData           Favorites       NTUSER.DAT  SendTo          _viminfo     manual56                    wc
Application Data  IECompatCache   NetHood     Templates       admovie.jpg  ntuser.dat.LOG              ??????????????????
CMB               IETldCache      PrintHood   UserData        client.log   ntuser.ini                  ??????
Contacts          Local Settings  PrivacIE    VirtualBox VMs  extensions   ntuserdirect_MyManager.dat
Cookies           My Documents    Recent      WINDOWS         helloworld   test_git

(3) git add 操作实验

$ cd manual56/
--查看git当前版本库的状态
$ git status 
# On branch master
nothing to commit (working directory clean)

--进入我要修改的章节目录
$ cd docs/Chapter_17/  
$ vim 17.5.0.0.0.md    --新建一个md文件,里面简单写“only a test”字符串,wq保存退出编辑状态。

-- 查看状态
$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       17.5.0.0.0.md   --看到有红颜色的一个新的文件还没有提交上去,这一行的文件名显示为红色。
nothing added to commit but untracked files present (use "git add" to track)

添加文件add

git add 17.5.0.0.0.md添加单个文件,多个文件可以用空格来隔开,比如(git add 17.5.0.0.0.md 17.5.0.0.1.md 17.5.0.0.2.md),也可以使用git add -A添加所有的文件。

--执行添加命令
$ git add 17.5.0.0.0.md

--查看单个文件版本状态
$ git status 17.5.0.0.0.md 
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   17.5.0.0.0.md
#

--查看整个库版本状态
$ git status 
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   17.5.0.0.0.md
#


手动用MarkdownPad打开C:\Documents and Settings\skyman\manual56\docs\Chapter_17\17.5.0.0.0.md,在里面输入中文字符串,保存退出。然后查看版本库状态,显示绿颜色的表示已经缓存起来了,显示红颜色的是修改过的但是没有缓存起来的。

(4) git commit,修改完之后,进行commit提交 git commit -m "Test change", -m 是指定提交信息,必填项目
$ git commit -am "Test chanage"
[master 3e96f90] Test chanage
 1 file changed, 1 insertion(+), 1 deletion(-)
 
$ git status 
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)
--显示已经提交到本地版本库了

(5)把已经修改的文件push到服务器,git push --tags   --push所以缓存到本地服务器的文件。

$ git push origin master  
Counting objects: 13, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (10/10), 768 bytes, done.
Total 10 (delta 6), reused 0 (delta 0)
To git@github.com:mchdbagh/manual56.git
   e754e68..3e96f90  master -> master
(6)git diff查看已暂存和未暂存的更新

实际上 git status 的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff 命令。稍后我们会详细介绍git diff,不过现在,它已经能回答我们的两个问题了:当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交? git diff 会使用文件补丁的格式显示具体添加和删除的行。

假如再次修改 README 文件后暂存,然后编辑 benchmarks.rb 文件后先别暂存,运行 status 命令,会看到:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD 
    
    
   
     ..." to unstage)
#
#	new file:   README
#
# Changed but not updated:
#   (use "git add 
     
     
     
   
      ..." to update what will be committed)
#
#	modified:   benchmarks.rb
#
     
     
 

要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff

$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..da65585 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
           @commit.parents[0].parents[0].parents[0]
         end

+        run_code(x, 'commits 1') do
+          git.commits.size
+        end
+
         run_code(x, 'commits 2') do
           log = git.commits('master', 15)
           log.size

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用 git diff --cached 命令。(Git 1.6.1 及更高版本还允许使用git diff --staged,效果是相同的,但更好记些。)来看看实际的效果:

$ git diff --cached
diff --git a/README b/README
new file mode 100644
index 0000000..03902a1
--- /dev/null
+++ b/README2
@@ -0,0 +1,5 @@
+grit
+ by Tom Preston-Werner, Chris Wanstrath
+ http://github.com/mojombo/grit
+
+Grit is a Ruby library for extracting information from a Git repository

请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行git diff 后却什么也没有,就是这个原因。

像之前说的,暂存 benchmarks.rb 后再编辑,运行 git status 会看到暂存前后的两个版本:

$ git add benchmarks.rb
$ echo '# test line' >> benchmarks.rb
$ git status
# On branch master
#
# Changes to be committed:
#
#	modified:   benchmarks.rb
#
# Changed but not updated:
#
#	modified:   benchmarks.rb
#

现在运行 git diff 看暂存前后的变化:

$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index e445e28..86b2f7c 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -127,3 +127,4 @@ end
 main()
 
 ##pp Grit::GitRuby.cache_client.stats
+# test line

然后用 git diff --cached 查看已经暂存起来的变化:

$ git diff --cached
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..e445e28 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
          @commit.parents[0].parents[0].parents[0]
        end

+        run_code(x, 'commits 1') do
+          git.commits.size
+        end
+
        run_code(x, 'commits 2') do
          log = git.commits('master', 15)
          log.size


OK成功了,然后打开网址https://github.com/xxxxxx/blob/master/docs/Chapter_17/17.5.0.0.0.md去看提交的新内容,见图片所示,新建立的文件17.5.0.0.0.md已经成功上传到remote文件服务器了。


这些项目,如果是个人项目,已经足够满足我们的日常使用要求了,但是如果多人协同操作,那还是远远不够的。

原文地址:https://www.cnblogs.com/xhqhome/p/5535033.html