Tổng Hợp Git

Tổng Hợp Git

 GIT

1/link cài đặt gits tự động: https://git-scm.com/download/win hoặc 

github desktop : https://git-scm.com/download/win

có đọc thêm tiếng anh : https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

2/ cách kiểm tra phiên bản:git --version

-Để đọc/ghi hoặc cập nhật thông tin cấu hình sử dụng lệnh git config.

– system: thông tin sẽ được dùng cho tất cả người dùng và tất cả kho chứa trên hệ thống. Thông tin cấu hình được lưu tại /etc/gitconfig. Ví dụ trên hệ thống Windows sẽ là C:\Program Files\Git\mingw64\etc\gitconfig. Để cấu hình, cần thêm tham số --system cho lệnh git config. Ví dụ: $ git config --system user.name "Van Teo". Cần phải có quyền quản trị hệ thống mới thực hiện được mức cấu hình này.


– global: nếu cấu hình ở mức này, thông tin sẽ được dùng cho duy nhất tài khoản đang đăng nhập và cho tất cả các kho chứa mà bạn đang làm việc trên hệ thống. Thông tin cấu hình được lưu tại ~/.gitconfig. Ví dụ trên hệ thống Windows, user đang đăng nhập là tentaikhoan, thì thông tin sẽ được lưu tại C:\Users\tentaikhoan\.gitconfig. Để cấu hình, cần thêm tham số --global cho lệnh git config. Ví dụ: $ git config --global user.name "Van Teo". Đây là mức cấu hình hay được sử dụng.


– local: nếu cấu hình ở mức này, thông tin sẽ được dùng cho duy nhất một kho chứa. Thông tin cấu hình được lưu trong chính kho chứa, tại .git/config. Để cấu hình, sử dụng lệnh git config. Ví dụ: $ git config user.name "Van Teo".

$ git config --global user.name "Van Teo"

$ git config --global user.email nguyenvanteo@gmail.com

 

Mở .gitconfig để kiểm tra thông tin vừa cấu hình:

 

[user]

         name = Van Teo

         email = nguyenvanteo@gmail.com

$ git config --global core.editor code:cấu hình để Git dùng Visual Studio Code 

$ git config --global core.editor notepad: cấu hình để Git dùng Notepad 

$ git config --global core.editor "'C:/Program Files/Sublime Text 3/sublime_text.exe' -w":Cấu hình để Git dùng Sublime Text 

git config --list: Để kiểm tra các thông tin cấu hình đã cài đặ

Để kiểm tra cụ thể một thông tin, sử dụng cú pháp sau: git config {key}

Ví dụ:

$ git config user.name

Hiển thị gợi ý của git:

– git <verb> --help

– git help <verb>

– man git -<verb>

– git config --help

Đọc thêm ở đây (tiếng Anh):https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup

https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository

- $ git init: tạo kho chứa

- $ git add tailieu.txt: theo dõi tập tin

- $ git status : kiểm tra trạng thái tập tin

- $ git commit -m ‘’ : thực hiện commit

- $git clone : sao chép kho chưa từ xa về

Lệnh git diff đã thực hiện so sánh nội dung của tập tin ở thư mục làm việc

thêm tham số -a  để thực hiện commit mà không cần stage

- $git rm  để xóa tập tin khỏi khu vực stage

Nếu bạn chắc chắn muốn xóa tập tin,  sử dụng thêm tham số -f. (f là viết tắt force).$ git rm -f xoa.txt

thêm tham số -r nếu là thư mục.

- Ví dụ xóa tập tin khớp mới mẫu (xóa toàn bộ các tập tin có phần mở rộng là .log trong thư mục log):

$ git rm log/*.log

- Ví dụ xóa toàn bộ các tập tin kết thúc bằng ~.

$ git rm \*~

Để xóa một tập tin trong thư mục làm việc, sử dụng lệnh $ rm tentaptin. Để xóa thư mục trong thư mục làm việc, sử dụng lệnh $ rm –r tenthumuc

- $ git log: xem kết quả (lịch sử)

Tham số -p sẽ hiển thị diff của từng commit, sử dụng thêm tham số -2 để chỉ hiển thị 2 commit gần nhất.Ví dụ,$ git log -p -2 --word-diff

Để xem thống kê tóm tắt, sử dụng tham số --stat.Ví dụ,$ git log --stat

Để xem hiển thị theo nhiều cách khác nhau, sử dụng tham số --pretty.

Ví dụ hiển thị mỗi commit trên một dòng,$ git log --pretty=oneline

Để định dạng hiển thị từng thông tin, sử dụng tham số --pretty=format.

Đối với văn bản lớn, có thể sử dụng thêm tham số --word-diff để xem thông tin một cách tổng quát.

Tùy chọn

Mô tả

-p

Hiển thị bản vá của mỗi commit

--word-diff

Hiển thị bản vá ở định dạng rút gọn

--stat

Hiển thị thống kê của các tập tin được chỉnh sửa trong mỗi commit

--shortstat

Hiển thị ngắn gọn thống kê của các tập tin được chỉnh sửa trong mỗi commit

--name-only

Hiển thị danh sách các tập tin bị thay đổi (sau thông tin commit)

--name-status

Hiển thị danh sách các tập tin bị ảnh hưởng như thêm/sửa/xóa thông tin

--abbrev-commit

Hiển thị mã băm (SHA-1) ở dạng rút gọn

--relative-date

Hiển thị khoảng thời gian từ lúc commit đến thời điểm hiện tại

--graph

Hiển thị thông tin về rẽ nhánh, trộn nhánh và các thông tin khác

--pretty

Hiển thị thông tin theo định dạng tùy chỉnh (oneline, full, fuller, format)

--oneline

Dạng rút gọn của --pretty=oneline --abbrev-commit


Tham số

Mô tả

- (n)

Hiển thị n commit mới nhất

--since, --after

Chỉ hiển thị các commit được thực hiện sau ngày cụ thể

--until, --before

Chỉ hiển thị các commit được thực hiện trước ngày cụ thể

--author

Hiển thị các commit theo tên tác giả

--commiter

Hiển thị các commit theo tên người commit

--grep

Hiển thị các commit dựa vào nội dung thông điệp khi commit (message)

Ví dụ: git log --grep="ten"

-S

Hiển thị các commit dựa vào nội dung đã bị thay đổi (thêm/xóa) trong các tập tin

Ví dụ: $ git log -Sword



- $ git commit --amend :Trong trường hợp bạn thực hiện commit vội vàng nên bị quên một vài tập tin hoặc nội dung message không được như ý. Thay vì thực hiện một commit khác, bạn có thể commit lại để ghi đè lên commit vừa thực hiện

- Sử dụng lệnh git checkout -- <file>Sử dụng lệnh git checkout -- <file>Sau khi thực hiện thay đổi nội dung của một tập tin trong “thư mục làm việc”, bạn hoàn toàn có thể hủy bỏ tất cả, để chuyển tập tin về trang thái của lần commit gần nhất (hoặc như khi mới đưa nó vào thư mục làm việc hoặc như khi mới clone về máy).

- $ git remote remove tenkhochua: Để gỡ bỏ một tham chiếu đến kho chứa ở xa (ví dụ thay đổi server, người đó không còn cộng tác trong dự án nữa)

- Để xem danh sách các tag sử dụng lệnh $ git tag

- Để xem danh sách các tag sử dụng lệnh $ git tag

- $ git remote rename tencu tenmoi: đổi tên kho chứa ở xa

- $ git fetch [remote name]: Lệnh trên sẽ truy cập vào remote repo, thực hiện so sánh local repo và remote repo, lấy về các dữ liệu trên remote repo có mà local repo chưa có. Sau lệnh này, bạn đã có các tham chiếu tới toàn bộ các nhánh của remote repo, từ đó bạn có thể thực hiện tích hợp và kiểm tra khi cần thiết.

$ git push [tên máy chủ] [tên nhánh]: đẩy mã nguồn lên

- Các trạng thái được viết tắt: ?? là tập tin chưa được theo dõi (untracked), A là tập tin đã được đánh dấu để commit (staged), M là tập tin đã bị thay đổi mà chưa được đánh dấu (modified). AM là tập tin đã staged và modified. MM là tập tin đã modified, đã staged rồi lại modified.

$ git status -s

M  readme.txt

A  taptin1.doc

AM  view/view1.txt

?? code.php

MM test.txt

Các luật bỏ qua tập tin được lưu trong tập tin .gitignore.

Sữa lỗi git

a/

[Khi gõ lệnh git commit, có thể gặp lỗi như sau:

$ git commit

hint: Waiting for your editor to close the file... This command is not supported by the help utility.  Try "D:/Liv/TuHoc/IT/chuyennganh/CNPM/gitlearning/langbiang/.git/COMMIT_EDITMSG /?".

Aborting commit due to empty commit message.

Để thực hiện việc đổi tên, sử dụng lệnh git mv ten_cu ten_moi.

Lỗi này xảy ra do trong tập tin .git\config có cấu hình như sau:

[core]

         repositoryformatversion = 0

         filemode = false

         bare = false

         logallrefupdates = true

         symlinks = false

         ignorecase = true

            editor = help

Để ý dòng tô đậm đã thiết lập editor là help, dòng này được ưu tiên hơn giá trị editor trong tập tin .gitconfig nên Git không thể mở được editor, dẫn đến không thể thực hiện commit.

Cách sửa: cấu hình lại editor trong .git\config hoặc xóa dòng cấu hình editor=help để sử dụng cấu hình của tập tin .gitconfig.]

Sau khi gõ lệnh commit, giả sử cửa sổ Sublime Text sẽ mở ra với nội dung như sau:

# Please enter the commit message for your changes. Lines starting

# with '#' will be ignored, and an empty message aborts the commit.

#

# On branch master

# Your branch is ahead of 'origin/master' by 8 commits.

#   (use "git push" to publish your local commits)

#

# Changes to be committed:

#      modified:   tailieu.txt

Bắt đầu là một dòng trống để bạn nhập thông điệp, sau đó là nội dung của lệnh git status cuối cùng (đã được chú thích). Bạn có thể xóa nội dung được chú thích hoặc giữ nguyên để dễ theo dõi, nhập thông điệp riêng của bạn. Lưu và đóng Sublime text, lệnh commit sẽ được thực hiện.

Bạn cũng có thể sử dụng lệnh git commit -v để đưa nội dung của lệnh git diff --staged vào trong cửa sổ soạn thảo.

Ví dụ,

# Please enter the commit message for your changes. Lines starting

# with '#' will be ignored, and an empty message aborts the commit.

#

# On branch master

# Your branch is ahead of 'origin/master' by 9 commits.

#   (use "git push" to publish your local commits)

#

# Changes to be committed:

#      modified:   tailieu.txt

# ------------------------ >8 ------------------------

# Do not modify or remove the line above.

# Everything below it will be ignored.

diff --git a/tailieu.txt b/tailieu.txt

index 94ba15c..d0620f8 100644

--- a/tailieu.txt

+++ b/tailieu.txt

@@ -3,4 +3,5 @@ tai liệu 3/3/2019

 Test diff --staged

 10:53 staged

 10:56 unstaged

-3:23 4/3/2019

\ No newline at end of file

+3:23 4/3/2019

+3:48 4/3/2019

\ No newline at end of file

Khi commit, nội dung của lệnh git diff --staged  và các chú thích sẽ bị gỡ đi.

Ngoài ra, cũng có thể nhập trực tiếp thông điệp của mỗi commit bằng tham số -m. Ví dụ,

git commit -m “Issue số 2, có sửa hàm abc()”

Sau khi thực hiện, nếu thành công, lệnh commit sẽ hiển thị, nhánh bạn vừa commit, mã SHA-1, bao nhiêu tập tin đã thay đổi, số dòng đã thêm hoặc xóa.

Mỗi commit là một phiên bản của dự án, vì vậy sau này, bạn sẽ dựa vào đó để so sánh hoặc khôi phục các phiên bản.

Tag annotated

Để thêm tag kiểu annotated sử dụng lệnh $ git tag với tham số -a, ví dụ,

$ git tag -a v1.3 -m "phien ban 1.3"

Tham số -m dùng để tạo thông điệp cho tag, nếu không sử dụng tham số -m và không có thông điệp đi kèm, lệnh trên sẽ mở cửa sổ soạn thảo để bạn nhập thông điệp.

Tag lightweight

Đây là cách thứ hai để tạo tag cho một commit. Để tạo tag kiểu này, Git sẽ lấy mã băm của commit và lưu vào một tập tin. Lệnh để tạo là $ git tag [tên của tag]. Lưu ý là không có thêm các tham số -a, -s, hay -m giống như khi tạo một tag annotated.Ví dụ,$ git tag v1.4-lw

Khi xem thông tin của tag v1.4-lw sẽ không thấy có thông tin về người tag, ngày tag và thông điệp

Ví dụ,$ git show v1.4-lw

commit a89362ebd9224568e65afdfcacd9a4a6a3b30d8d (HEAD -> master, tag: v1.4-lw, tag: v1.3, tag: v1.2, tag: v1.1, tag: v1.0, origin/master, origin/HEAD)

Author: legiacong <legiacong@gmail.com>

Date:   Fri Mar 15 16:16:55 2019 +0700

Update testdesktop.txt

- Bạn có thể tạo tag cho các commit đã được thực hiện trước đó. Thử xem lịch sử commit của một kho chứa có nội dung như sau,

$ git log --pretty=oneline

- Để xóa tag tại local repo, sử dụng lệnh $ git tag -d <tên tag>.

- Để đẩy tag lên remote repo, sử dụng lệnh $ git push origin <tên tag>.

-Nếu muốn xem nội dung của các tập tin tại một thời điểm đặt tag, và chuyển con trỏ của Git (HEAD) về thời điểm tương ứng, sử dụng lệnh $ git checkout <tên tag>

Phân  Nhánh

- $ git branch testing: tạo nhánh mới tên testing

Để biết được con trỏ HEAD đang nằm trên nhánh nào? sử dụng lệnh $ git log với tham số --decorate

- $ git checkout <tên nhánh>:Để chuyển qua một nhánh khác

- Để vừa tạo và chuyển sang nhánh mới, sử dụng lệnh $ git checkout kèm theo tham số -b.

Ví dụ,$ git checkout -b iss53.Lệnh trên là gộp của hai lệnh sau:$ git branch iss53 và $ git checkout iss53

-Để xóa một nhánh, sử dụng lệnh $ git branch với tham số -d.

Ví dụ,$ git branch -d hotfix

Deleted branch hotfix (was e31a627).

Cơ bản về tích hợp:

Giả sử bạn đã hoàn thành công việc trên nhánh iss53 và quyết định tích hợp vào nhánh master. Nhánh master là nhánh được tích hợp vào, tạm gọi là nhánh chính, nhánh iss53 gọi là nhánh phụ. Để tích hợp, bạn cần chuyển con trỏ HEAD về nhánh chính, sau đó tích hợp bằng lệnh $ git merge.

Giải quyết xung đột khi tích hợp:

Việc trộn nhánh không phải luôn luôn thành công. Có thể có xung đột (confict) giữa hai nhánh. Xung đột sẽ xảy ra nếu trước đó, ở trên cả hai nhánh, bạn đều sửa trên cùng một vị trí của cùng một tập tin, nghĩa là Git không thể lấy nội dung này đè lên nội dung kia. Khi đó Git sẽ thông báo nội dung tích hợp bị xung đột.

Khi bị xung đột, Git sẽ không tự động tạo ra commit mới cho việc tích hợp. Nó sẽ ngưng lại, và chờ bạn xử lý phần nội dung bị xung đột. Để biết tập tin nào không được tích hợp do bị xung đột, sử dụng lệnh $ git status.

Các tập tin có xung đột mà chưa được xử lý được gọi là unmerged (chưa được tích hợp). Git sẽ sử dụng định dạng chuẩn (do Git quy định) để đánh dấu vùng nội dung bị xung đột. Bạn có thể mở tập tin có xung đột bằng trình soạn thảo mã nguồn bất kì (ví dụ notepad) để quan sát vùng xung đột. Ví dụ nội dung của tập tin conflict_test.txt sẽ như sau:

viet tren nhanh master

<<<<<<< HEAD

viet tren nhanh hotfix

=======

viet tren nhanh iss123

>>>>>>> iss123

Nội dung bị xung đột được đánh dấu bằng khối: <<<<< ==== >>>>>. Trong đó, phần trên dấu ==== thuộc “nhánh chính” (trong ví dụ này là nhánh master, con trỏ HEAD đang trỏ tới master), phần dưới dấu ==== thuộc “nhánh phụ” (trong ví dụ này là nhánh iss123). Để xử lý xung đột, bạn có thể chọn phần trên, phần dưới hoặc kết hợp cả hai phần lại cho hợp lý. Ví dụ, bạn có thể xử lý xung đột trên bằng cách thay thế toàn bộ khối “<<<< …. >>>> iss123” bằng nội dung: “viet tren nhanh”.

Ba hàng có chứa <<<<, ====, và >>>> sẽ bị xóa đi. Sau khi đã xử lý các xung đột trên mỗi tập tin, bạn cần lưu lại, đóng chương trình soạn thảo, chạy lệnh $ git add <tên tập tin> để báo cho Git biết là xung đột đã được xử lý. Git xem các tập tin được đưa vào khu vực tổ là đã được xử lý xung đột.

Sau khi đã xử lý xung đột xong, bạn gõ lệnh $ git commit để hoàn thành việc tích hợp đang bị ngưng lại. Git sẽ mở lại thông điệp bạn đã nhập trong lệnh $ git merge trước đó, bạn có thể chỉnh sửa lại thông điệp nếu cần thiết, đóng cửa sổ soạn thảo thông điệp để hoàn thành việc trộn nhánh.

Quản Lý Nhánh:

Để xem các nhánh hiện có, sử dụng lệnh $ git branch.

Để xem lệnh commit mới nhất trên mỗi nhánh, sử dụng lệnh $ git branch -v.

Để xem trong các nhánh trên, nhánh nào đã tích hợp vào nhánh hiện tại (master), sử dụng lệnh $ git branch --merged.

Để ý, các nhánh mà không có dấu (*) phía trước là đã được tích hợp. Do đã được tích hợp vào nhánh khác rồi, nên bạn hoàn toàn có thế xóa các nhánh này đi (dùng lệnh $ git branch -d <tên nhánh>) mà không làm mất dữ liệu.

Để xem trong các nhánh trên, nhánh nào chưa tích hợp vào nhánh hiện tại (master), sử dụng lệnh $ git branch --no-merged.

Vì chưa được tính hợp vào nhánh hiện tại, nên nếu bạn sử dụng lệnh $ git branch -d để xóa, Git sẽ báo lỗi và không cho xóa. Lý do Git không cho xóa vì sợ bạn sẽ làm mất hết các thay đổi vì nó chưa được tích hợp vào nhánh khác.

$ git branch -d testing

error: The branch 'testing' is not fully merged.

If you are sure you want to delete it, run 'git branch -D testing'.

Tuy nhiên, nếu bạn vẫn muốn xóa nhánh chưa được tích hợp thì dùng lệnh $ git branch -D <tên nhánh>

Ví dụ, bạn đang đứng ở nhánh testing, nhưng lại muốn kiếm tra các nhánh nào đã được tích hợp vào nhánh master thì dùng lệnh sau:

 

Maxsys@DESKTOP-7LPDOL6 MINGW64 /e/langbiang (testing)

$ git branch --merged master

  hotfix

  iss123

  master

  phienban1

Hoặc, bạn đang đứng ở nhánh testing, nhưng lại muốn kiếm tra các nhánh nào chưa được tích hợp vào nhánh master thì dùng lệnh sau:

$ git branch --no-merged master

* testing

Nhánh dài hạn

Nhánh dài hạn (hay còn gọi là nhánh chính, long-running branches) là nhánh luôn mở, tồn tại xuyên suốt trong quá trình phát triển dự án.

Ví dụ một số nhánh dài hạn:

– master: là nhánh chứa mã nguồn đã chạy hoàn toàn ổn định, đây là mã nguồn đã phát hành (release), hoặc chuẩn bị phát hành.

– dev (hoặc develop hoặc next hoặc test): là nhánh chạy song song với nhánh master, dùng để làm việc hoặc sử dụng để kiểm tra sự ổn định của mã nguồn. Khi mã nguồn tại nhánh dev đạt tới sự ổn định sẽ được tích hợp vào nhánh master. Tương tự như vậy, khi mã nguồn tại các nhánh ngắn hạn, sau khi đã được kiểm tra và không còn lỗi sẽ được tích hợp vào nhánh dev.

Trong quá trình phát triển dự án, các nhánh có độ ổn định cao sẽ nằm ở cuối trong lịch sử commit, các nhánh có độ ổn định thấp hơn sẽ nằm ở trên đầu.

Nhánh ngắn hạn

 

Nhánh ngắn hạn (hay còn gọi là nhánh chủ đề, topic branches, short-lived branch) là các nhánh được tạo ra để thực hiện một công việc cụ thể, ví dụ: phát triển một chức năng (feature), sửa lỗi (hotfix), tạo phiên bản mới cho sản phẩm (release). Nhánh ngắn hạn chỉ tồn tại trong thời gian ngắn và sẽ bị xóa đi.

Quan sát một tình huống sử dụng nhánh ngắn hạn: ví dụ bạn đang làm việc trên nhánh master, bạn muốn thực hiện một chức năng mới (iss91), đang đứng tại nhánh master, bạn sẽ tạo một nhánh ngắn hạn có tên iss91, làm việc trên nhánh iss91 được một lúc, từ nhánh iss91 bạn tạo thêm nhánh iss91v2 để thực hiện công việc theo một hướng khác, thực hiện một vài commit trên nhánh iss91v2, sau đó quay trở lại nhánh master làm việc và thực hiện một số commit trên nhánh master, tiếp theo, trên nhánh master bạn tạo một nhánh mới để thử một ý tưởng mới (tên là dumbidea), thực hiện một số commit trên nhánh dumbidea.

HTML

CSS

JQUERY

BOOTSTRAP

PHOTOSHOP

PHP

1/ PHP (hypertext Preprocessor) là một ngôn ngữ lập trình mã nguồn mở được thực thi trên máy chủ.

một tập tin php có phần mở rộng *.php nó có thể chứa các văn bản mã nguồn html,css,javascript,jquery và php

2/PHP khác HTML

đối với html khi người dùng có nhu cầu xem trang web thì sever gửi nội dung trang web về 

còn với PHP khi người dùng có nhu cầu xem trang web  thì sever phát sinh chuyển đổi mã php thành mã html rồi gửi về trình duyệt web của người dùng.

3/ sever chỉ quan tâm mã nguồn php nó chuyển php thành html rồi gửi lại cho người dùng,trang web php được sever phát sinh chỉ gửi đến một client duy nhất.sever php mạnh hơn nhiều lần so với một server html thông thường.

4/ chức năng tạo ra website động thao tác với file trên server,nhận gửi cookie,cập nhật database,hạn chế người dùng truy cập website mã hóa dữ liệu

ưu điểm : thực thi tốt trên các hệ điều hành,các máy chủ phổ biến,kết hợp dễ dàng với hệ quản trị cơ sở dữ liệu,tài liệu phong phú đa dạng

5/nối các chuỗi bằng dấu chấm.có phân biệt tên biến bằng chữ hoa và thường

6/var_dump tính độ dài chuỗi. gettype: kiểm tra kiểu dữ liệu chuỗi

7/ sử dụng ép kiểu hoặc sử dung hàm settype() để ép kiểu

8/ kiểm tra kiểu của biến : is_kiểu dữ liệu()

Đăng nhận xét

0 Nhận xét

myadcash